package com.jdk.demo.reflect.clazz;

import java.util.List;

public class ClassDemo {

	/**运行后输出结果：
	name->club.throwable.reflect.Main$Supper
	canonicalName->club.throwable.reflect.Main.Supper
	simpleName->Supper
	======================================
	name->[[Ljava.lang.String;
	canonicalName->java.lang.String[][]
	simpleName->String[][]
简单理解为：
	getName()：用于获取类在Java虚拟机中的类名表示。
	getCanonicalName()：用于获取全类名，包括包路径，包路径以点号分隔。
	getSimpleName()：用于获取类名，不包括包路径。
	 * @param args
	 */
	public static void main(String[] args) {
		Supper<String, List<Integer>> supper = new Supper<>();
		Class<?> clazz = supper.getClass();
		System.out.println("name->" + clazz.getName());
		System.out.println("canonicalName->" + clazz.getCanonicalName());
		System.out.println("simpleName->" + clazz.getSimpleName());
		System.out.println("======================================");
		String[][] strings = new String[1][1];
		System.out.println("name->" + strings.getClass().getName());
		System.out.println("canonicalName->" + strings.getClass().getCanonicalName());
		System.out.println("simpleName->" + strings.getClass().getSimpleName());
	}

	private static class Supper<K, V> {
		private K key;
		private V value;
        //省略setter和getter方法
	}

}
